Ext.namespace('pages.p2p.jhnxm.jhncg.query');

pages.p2p.jhnxm.jhncg.query.JhncgAdd = function(config) {
	Ext.apply(this, config);
	/** 操作类型 */
	this.operType = config.operType;
	this.initUIComponents();
	pages.p2p.jhnxm.jhncg.query.JhncgAdd.superclass.constructor.call(this);
};
Ext.extend(pages.p2p.jhnxm.jhncg.query.JhncgAdd, Ext.Window, {
	initUIComponents : function() {
		
		this.form = new Ext.form.FormPanel({
			region : 'north',
			layout : 'column',
			height : 200,
			labelWidth : 125,
			labelAlign : 'left',
			autoScroll : true,
			border : false,
			frame : false,
			title:'项目信息',
			bodyStyle : 'padding:5', 
			
			items : [ {
				columnWidth : 1,
				height : 10,
				border : false
			}, {
				columnWidth : 1,
				layout : 'form',
				border : false
			}, {
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ {
					fieldLabel : '项目名称',
					xtype : 'textfield',
					name : 'XMMC',
					id : 'XMMC',
					allowBlank : false,
					value : '计划内项目',
					maxLength : 45,
					maxLengthText : '项目名称过长',
					anchor : '98%'
				} ]
			}, {
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ {
					fieldLabel : '年化收益率（%）',
					xtype : 'numberfield',
					regex  :  /^\d{1,2}(\.[0-9]{1,2}){0,1}$/,
					regexText : '请输入0到99.99之间的数值',
					allowBlank : false,
					allowNegative : false,
					name : 'NHSYL',
					id : 'NHSYL',
					anchor : '98%'
				}]
			}, {
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ new Ext.form.ComboBox({
					fieldLabel : '期限（月）',
					name : 'QX_MONTH',
					id : 'QX_MONTH',
					anchor : '98%',
					store : new Ext.data.SimpleStore({
						fields : [ 'VALUE', 'TEXT' ],
						data : [ [ '1', '一个月' ],[ '2', '二个月' ]
						         ,[ '3', '三个月' ],[ '4', '四个月' ]
								 ,[ '5', '五个月' ],[ '6', '六个月' ]
								 ,[ '7', '七个月' ],[ '8', '八个月' ]
								 ,[ '9', '九个月' ],[ '10', '十个月' ]
								 ,[ '11', '十一个月' ],[ '12', '一年' ]
								 ,[ '18', '一年半' ],[ '24', '两年' ]
							   ]
					}),
					valueField : 'VALUE',
					displayField : 'TEXT',
					hiddenName : 'QX_MONTH_VALUE',
					triggerAction : 'all',
					mode : 'local',
					editable : false,
					selectOnFocus : true,
					allowBlank : false, 
					emptyText:'请选择...',
					value : '',
					listeners : {
						'select' : this.onQxMonthSelect.createDelegate(this)
					}
				})]
			}, {
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ {
					fieldLabel : '期限（天）',
					xtype : 'numberfield',
					allowBlank : false,
					allowNegative : false,
					readOnly : true,
					name : 'QX_DAY',
					id : 'QX_DAY',
					anchor : '98%'
				} ]
			},{
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ {
					fieldLabel : '申请发标日期',
					xtype : 'datefield',
					allowBlank : false, 
					anchor: '98%',
					name : 'FBSJ',
					format : 'Y-m-d',
					id : 'FBSJ',
					hideTrigger : true,
					value : new Date(),
					readOnly : true
				} ]
			},  {
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ {
					fieldLabel : '募集期（天）',
					xtype : 'numberfield',
					allowBlank : false,
					allowNegative : false,
					decimalPrecision:0,
					name : 'MJQ',
					id : 'MJQ',
					maxLength : 5,
					maxLengthText : '募集期不能大于99,999天',
					anchor : '98%',
					listeners : {
						'change' : this.onCal.createDelegate(this)
					}
				} ]
			},{
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ {
					fieldLabel : '截标日期',
					xtype : 'datefield',
					anchor: '90%',
					name : 'JBRQ',
					id : 'JBRQ',
					format : 'Y-m-d',
					hideTrigger : true,
					readOnly : true,
					allowBlank : false, 
					anchor : '98%'
				} ]
			}, {
				columnWidth : .5,
				layout : 'column',
				border : false,
				items : [ {
					columnWidth : 0.8,
					layout : 'form',
					border : false,
					items : [ {
						fieldLabel : '计息日期',
						xtype : 'datefield',
						allowBlank : false,  
						name : 'JXRQ',
						id : 'JXRQ',
						format : 'Y-m-d',
						hideTrigger : true,
						readOnly : true,
						anchor : '98%'
					} ]
				} , {
					columnWidth : 0.2,
					layout : 'form',
					border : false,
					items : [{
						xtype : 'button',
						id : 'btn_cal',
						text : '计算',
						handler : function(){
							this.onCal();
						}.createDelegate(this)
					} ]
				} ]
			},{
				columnWidth : .5,
				layout : 'column',
				border : false,
				items : [ {
					columnWidth : 0.75,
					layout : 'form',
					border : false,
					items : [ {
					fieldLabel : '项目金额',
					xtype : 'numberfield',
					allowBlank : false,
					readOnly:true,
					regex  :  /^\d{1,10}(\.[0-9]{1,2}){0,1}$/,
					regexText : '项目金额不能大于9,999,999,999.99',
					name : 'XMJE',
					anchor : '99%',
					id : 'XMJE'
					}]
				}, {
					columnWidth : 0.25,
					layout : 'form',
					border : false,
					items : [{
						xtype : 'button',
						id : 'btn_zq',
						text : '选择债权',
						handler : function(){
							this.onAdd();
						}.createDelegate(this)
					} ]
				} ]
			}, {
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ new Ext.form.ComboBox({
					fieldLabel : '项目类型',
					name : 'XM_TYPE',
					id : 'XM_TYPE',
					anchor : '98%',
					store : new Ext.data.SimpleStore({
						fields : [ 'VALUE', 'TEXT' ],
						data : [/* [ '00', '未知' ],*/[ '01', '债权类组合' ]
							   ]
					}),
					valueField : 'VALUE',
					displayField : 'TEXT',
					hiddenName : 'XM_TYPE_VALUE',
					triggerAction : 'all',
					mode : 'local',
					editable : false,
					selectOnFocus : true,
					allowBlank : false, 
					value : '01'
				}) ]
			},{
				columnWidth : .5,
				layout : 'form',
				border : false,
				hidden:true,
				items : [ {
					fieldLabel : '发标人手机号码',
					xtype : 'numberfield',
					name : 'FBRSJHM',
					id : 'FBRSJHM',
					//allowBlank : false, 
					//regex:/^1[3|4|5|7|8]\d{9}$/,
					//regexText:'请输入11位手机号码',
					value:parent.gyh,
					anchor : '98%'
				} ]
			}, {
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ new Ext.form.ComboBox({
					fieldLabel : '项目信用级别',
					name : 'XYJB',
					id : 'XYJB',
					anchor : '98%',
					store : new Ext.data.SimpleStore({
						fields : [ 'VALUE', 'TEXT' ],
						data : [ [ 'A', 'A' ],[ 'B', 'B' ],[ 'C', 'C' ],[ 'D', 'D' ]]
					}),
					valueField : 'VALUE',
					displayField : 'TEXT',
					hiddenName : 'XYJB_VALUE',
					triggerAction : 'all',
					mode : 'local',
					editable : false,
					selectOnFocus : true,
					allowBlank : false, 
					value : 'A'
				}) ]
			},{
				columnWidth : 1,
				layout : 'form',
				border : false,
				items : [ {
					fieldLabel : '项目投标范围',
					xtype : 'textfield',
					name : 'TBFW',
					id : 'TBFW',
					maxLength : 250,
					maxLengthText : '审核备注不能超过250个字符',
					allowBlank : false, 
					anchor : '98%'
				} ]
			},{
				columnWidth : 1,
				layout : 'form',
				border : false,
				items : [ {
					fieldLabel : '项目计划介绍',
					xtype : 'textarea',
					name : 'JHJS',
					id : 'JHJS',
					height : 80,
					maxLength : 500,
					maxLengthText : '审核备注不能超过500个字符',
					allowBlank : false, 
					anchor : '98%'
				} ]
			},{
				columnWidth : .5,
				layout : 'form',
				border : false,
				items : [ {
					fieldLabel : '发标用户',
					xtype : 'textfield',
					name : 'FBR',
					id : 'FBR',
					value : parent.gyh,
					readOnly : true,
					anchor : '98%'
				} ]
			}]
		});
		
		
		this.store = new Ext.data.Store();
		
		var sm = new Ext.grid.CheckboxSelectionModel({
			singleSelect : true
		});
		var cm = new Ext.grid.ColumnModel([ sm, new Ext.grid.RowNumberer(), {
			header : '债权名称',
			width : 100,
			sortable : true,
			dataIndex : 'ZQ_NAME'
		}, {
			header : '债权所属人姓名',
			width : 100,
			sortable : true,
			dataIndex : 'ZQ_OWNER_XM'
		}, {
			header : '债权所属人手机号码',
			width : 120,
			sortable : true,
			dataIndex : 'ZQ_OWNER_SJHM'
		},{
			header : '债权所属人身份证号码',
			width : 130,
			sortable : true,
			dataIndex : 'ZQ_OWNER_SFZ_NUM'
		}, {
			header : '债权开始日期',
			width : 130,
			sortable : true,
			dataIndex : 'ZQ_START_DATE'
		}, {
			header : '债权结束日期',
			width : 130,
			sortable : true,
			dataIndex : 'ZQ_END_DATE'
		}, {
			header : '债权金额',
			width : 80,
			sortable : true,
			dataIndex : 'ZQ_JE'
		}, {
			header : '本次发标金额',
			width : 80,
			sortable : true,
			dataIndex : 'ZQ_FBJE'
		}, {
			header : '债权类型',
			width : 60,
			sortable : true,
			dataIndex : 'ZQ_TYPE',
			renderer : function(v){
				if('00' == v){
					return "未知";
				}else if('01' == v){
					return "债权";
				}
			}
		}, {
			header : '录入人用户名',
			width : 90,
			sortable : true,
			dataIndex : 'ZQ_OPER_USER_ID'
		}, {
			header : '录入时间',
			width : 130,
			sortable : true,
			dataIndex : 'ZQ_OPER_DATE'
		}, {
			header : '债权状态',
			width : 60,
			sortable : true,
			dataIndex : 'ZQ_STATE',
			renderer : function(v){
				if('00' == v){
					return "可用";
				}else if('01' == v){
					return "已用";
				}else if('02' == v){
					return "提前赎回,失效";
				}
			}
		}]);
		
		/**
		 * GridPanel
		 */
		this.grid = new Ext.grid.GridPanel({
			id : 'grid_add',
			region : 'center',
			store : this.store,
			title:'债权列表',
			border : true,
			frame : false,
			viewConfig : {
				autoFill : false,
				forceFit : false,
				focusRow : function() {
					return;
				},
				getRowClass : function(record, rowIndex, rowParams, store) {
					if (record.get("TOP_LEVEL") == "1") {
						return 'ux-grid-record-onTop';
					}
				}
			},
			sm : sm,
			cm : cm,
			tbar : [ {
				id : 'add',
				iconCls : 'add',
				text : '增加债权',
				handler : this.onAdd.createDelegate(this)
			}, '-',  {
				id : 'view',
				iconCls : 'view',
				text : '查看',
				handler : this.onView.createDelegate(this)
			}, '-', {
				id : 'deletet',
				iconCls : 'Delete',
				text : '移除',
				handler : this.onDelete.createDelegate(this)
			}],
			bbar : new Ext.PagingToolbar({
				pageSize : pageSize,
				store : this.store,
				displayInfo : true,
				displayMsg : '当前显示第 {0} - {1} 条 / 共 {2} 条',
				emptyMsg : "没有记录"
			})
		});
		
		
		
		Ext.apply(this, {
			id : 'form_addcg',
			title : '发标申请',
			border : false,
			layout : 'border',
			style:{
				marginRight: 'auto',
		        marginLeft: 'auto'
			},
			width : 700,
			height : 540,
			modal : true,
			items : [ this.form,this.grid ],
			listeners:{
				'render' : this.initData.createDelegate(this)
			},
			tbar : [ {
				text : '保存',
				iconCls : 'save',
				hidden: 'add'==this.operType ? false:true,
				handler: this.onSave.createDelegate(this)
			},{
				text : '关闭',
				iconCls : 'close',
				handler:this.onCancel.createDelegate(this)
			} ]
		});
	},
	
	initData : function() {},
	onQxMonthSelect : function(combo,record,index){
		this.grid.getStore().removeAll();
		Ext.getCmp('XMJE').setValue('');
		var qxMonth =  Ext.getCmp('QX_MONTH').getValue();
		Ext.getBody().mask("正在计算期限,请稍候...");
		Ext.Ajax.request({
			url : ExtJ.getActionPath("/jhn/getQxDayByQxMonth.do"),
			method : 'POST',
			params : {
				qxMonth : qxMonth
			},
			success : function(response, options) {
				var text = Ext.decode(response.responseText);
				if(text.success){
					var qxDay = text.qxDay;//期限(天)
					if(undefined == qxDay || qxDay < 0){
						ExtJ.showMessage("您的选择不正确，请重新操作");
						Ext.getCmp('QX_MONTH').setValue('');
					}else{
						Ext.getCmp('QX_DAY').setValue(qxDay);
					}
				}else{
					ExtJ.showMessage(text.msg);
				}
				Ext.getBody().unmask(true);
			}.createDelegate(this),
			failure : function(response, options){
				ExtJ.showError("网络异常！");
			}
		});
	},
	
	onCal : function(){
		this.grid.getStore().removeAll();
		Ext.getCmp('XMJE').setValue('');
		var fbrq = Ext.getCmp('FBSJ').getRawValue();
		var qx = Ext.getCmp('QX_DAY').getValue();
		var mjq = Ext.getCmp('MJQ').getValue();
		var year = new Date(fbrq).getYear();//发标日期年
		var month = new Date(fbrq).getMonth();//发标日期月
		var day = new Date(fbrq).getDay();//发标日期日
			
		if(undefined == fbrq || '' == fbrq){
			Ext.Msg.alert('提示','请选择发标日期');
			Ext.getCmp('FBSJ').focus();
			return;
		}
		if(undefined == qx || '' == qx){
			Ext.Msg.alert('提示','请输入期限');
			Ext.getCmp('QX').focus();
			return;
		}
		if(undefined == mjq || '' == mjq){
			Ext.Msg.alert('提示','请输入募集期');
			Ext.getCmp('MJQ').focus();
			return;
		}
		
		//设置截标时间
		if(fbrq.length >= 10){
			var jb_days = mjq;//截标日
			var jb_date = new Date(fbrq);
			jb_date.setDate(jb_date.getDate() + Number(jb_days));
			Ext.getCmp('JBRQ').setValue(jb_date);
			if( 5 == jb_date.getDay()){
				Ext.Msg.alert("警告","截标日期："+ Ext.getCmp('JBRQ').getRawValue() + "是周五！");
			}else if( 6 == jb_date.getDay()){
				Ext.Msg.alert("警告","截标日期："+ Ext.getCmp('JBRQ').getRawValue() + "是周六！");
			}
		}
		
		//设置计息日期
		if(fbrq.length >= 10){
			var jx_days= mjq + 1;//募集期到期是截标日,第二天开始计息
			var jx_date = new Date(fbrq);
			jx_date.setDate(jx_date.getDate() + Number(jx_days));
			Ext.getCmp('JXRQ').setValue(jx_date);
		}
	},
	onAdd : function() {
		var jxrq=Ext.getCmp('JBRQ').getRawValue();
		if(undefined == jxrq || '' == jxrq){
			Ext.Msg.alert('提示','请输入计息日期');
			Ext.getCmp('JXRQ').focus();
			return;
		}
		this.wint = new pages.p2p.jhnxm.jhncg.query.JhncgAddT({
			operType : 'add',
			store:this.store
		});
		this.wint.show();
	},
	onView : function() {
		var record = this.grid.getSelectionModel().getSelected();
		if (!record) {
			ExtJ.showMessage("请选择一条需要查看的记录!");
			return;
		}
		var win = new pages.p2p.jhnxm.jhnlr.query.JhnlrView({
			operType : 'view',
			record : record
		});
		win.show();
	},
	onDelete : function(){
		var record = this.grid.getSelectionModel().getSelected();
		if (!record) {
			ExtJ.showMessage("请选择一条需要移除的记录!");
			return;
		}
		Ext.Msg.confirm("确认","你确定要移除信息吗?",function(fn){
			if(fn == 'yes'){
				this.grid.getStore().remove(record);
				var sum=Ext.getCmp('grid_add').getStore().sum('ZQ_FBJE');
				Ext.getCmp('XMJE').setValue(sum);
			}
		}.createDelegate(this));
	},
	onSave:function(){
		var xmmc = Ext.getCmp("XMMC").getValue();
		if(''==xmmc){
			Ext.Msg.alert('提示','项目名称不能为空！');
			return;
		}else if(xmmc.length>45){
			Ext.Msg.alert('提示','项目名称字数不能超过45字！');
			return;
		}
		var nhsyl = Ext.getCmp("NHSYL").getValue();
		var re = new RegExp(/^\d{1,2}(\.[0-9]{1,2}){0,1}$/);
		console.log(nhsyl);
		if(''==nhsyl){
			Ext.Msg.alert('提示','年化收益率不能为空！');
			return;
		}else if(!re.test(nhsyl)){
			Ext.Msg.alert('提示','年化收益率格式不正确！请输入0到99.99之间的数值！');
			return;
		}
		var qx_month = Ext.getCmp("QX_MONTH").getValue();
		if(undefined == qx_month || '' == qx_month){
			Ext.Msg.alert('提示','请选择期限(月)');
			Ext.getCmp('QX_MONTH').focus();
			return;
		}
		var qx_day = Ext.getCmp("QX_DAY").getValue();
		var fbsj = Ext.getCmp("FBSJ").getRawValue();
		var mjq = Ext.getCmp("MJQ").getValue();
		if(undefined == mjq || '' == mjq){
			Ext.Msg.alert('提示','请输入募集期');
			Ext.getCmp('MJQ').focus();
			return;
		}
		var jxrq = Ext.getCmp("JXRQ").getRawValue();
		if(undefined == jxrq || '' == jxrq){
			Ext.Msg.alert('提示','请输入计息日期');
			Ext.getCmp('JXRQ').focus();
			return;
		}
		var jbrq = Ext.getCmp("JBRQ").getRawValue();
		var xmje = Ext.getCmp("XMJE").getValue();
		if(undefined == xmje || '' == xmje){
			Ext.Msg.alert('提示','请选择债权!');
			Ext.getCmp('XMJE').focus();
			return;
		}
		var xmlx = Ext.getCmp("XM_TYPE").getValue();
		var fbr = Ext.getCmp("FBR").getValue();
		var sjhm = Ext.getCmp("FBRSJHM").getValue();
		/*var sj=new RegExp(/^1[3|4|5|7|8]\d{9}$/);
		if(''==sjhm){
			Ext.Msg.alert('提示','发标人手机号码不能为空！');
			return;
		}else if(!sj.test(sjhm)){
			Ext.Msg.alert('提示','债权所属人手机号码格式不正确！');
			return;
		}*/
		var xyjb = Ext.getCmp("XYJB").getValue();
		var tbfw = Ext.getCmp("TBFW").getValue();
		if(''==tbfw.trim()){
			Ext.Msg.alert('提示','项目投标范围不能为空！');
			return;
		}else if(tbfw.trim().length>250){
			Ext.Msg.alert('提示','项目投标范围不能大于250字！');
			return;
		}
		var jhjs = Ext.getCmp("JHJS").getValue();
		if(''==jhjs.trim()){
			Ext.Msg.alert('提示','项目计划介绍不能为空！');
			return;
		}else if(jhjs.trim().length>500){
			Ext.Msg.alert('提示','项目计划介绍不能大于500字！');
			return;
		}
		var count=this.grid.getStore().getCount();
		if(count>0){
			var gridId=this.grid.getStore().getAt(0).get('ID');
			var gridFbje=this.grid.getStore().getAt(0).get('ZQ_FBJE');
			for(var i=1;i<count;i++){
				gridId=gridId+","+this.grid.getStore().getAt(i).get('ID');
				gridFbje=gridFbje+","+this.grid.getStore().getAt(i).get('ZQ_FBJE');
			}
		}else{
			Ext.Msg.alert('提示','请选择债权！');
			Ext.getCmp('XMJE').focus();
			return;
		}
		if(!this.form.getForm().isValid()){
			Ext.Msg.alert('提示','页面输入的有误,请按照要求输入!');
			return;
		}
		//this.onCal();
		Ext.getBody().mask("正在保存,请稍候...");
		this.form.getForm().submit({
			method:'post',
			url:ExtJ.getActionPath('jhn/saveJhncg.do'),
			params:{
				xmmc:xmmc,
				nhsyl:nhsyl,
				qx_month:qx_month,
				qx_day:qx_day,
				fbsj:fbsj,
				jxrq:jxrq,
				mjq:mjq,
				jbrq:jbrq,
				xmje:xmje,
				xmlx:xmlx,
				fbr:fbr,
				sjhm:sjhm,
				xyjb:xyjb,
				gridId:gridId,
				gridFbje:gridFbje,
				tbfw:tbfw,
				jhjs:jhjs
			},
			reset : false,
			success : function(option, action){
				var text = Ext.decode(action.response.responseText);
				if(text.isAddSuc){
					Ext.getCmp('grid').getStore().reload();
					Ext.Msg.alert('提示','保存成功!');
					this.close();
				}else{
					if(text.isZqKy){
						Ext.Msg.alert('提示','选择的债权失效或可用金额不足,请重选!');
						this.grid.getStore().removeAll();
					}else if(text.isNoGridId){
						Ext.Msg.alert('提示','选择债权数据有误,请重新选择!');
						this.grid.getStore().removeAll();
					}
				}
				Ext.getBody().unmask(true);
			}.createDelegate(this)
		});
	},
	onCancel : function(){
		this.close();
	}
});